Blade servers are self-contained all inclusive computer servers, designed for high density. Blade servers have many components removed for space, power and other considerations while still having all the functional components to be considered a computer (i.e., memory, processor, storage).
The blade servers are housed in a blade enclosure. The enclosure can hold multiple blade servers and perform many of the non-core services (i.e., power, cooling, I/O, networking) found in most computers. By locating these services in one place and sharing them amongst the blade servers, the overall component utilization is more efficient.
In a non-shared I/O environment, there is a direct physical link between a host computer on a compute node and an I/O node. The functions of the I/O node are typically assigned to a single host. Thus, when an I/O node is inserted into the server system, one of the hosts can request its functions and the management module for the server enclosure assigns the functions of that I/O node to the requesting host. In other embodiments, the assignments of I/O functions are made implicitly by blade and I/O node slot mappings designated by the enclosure manufacturer.
These types of enclosures are not very efficient because other hosts cannot utilize I/O node functions until the host presently using the I/O function gives up control. Additionally, there might be functions on a particular I/O node that are not being used by the assigned host but could be used by other hosts in the system.
Virtualization of functions in a shared I/O environment enables functions of an I/O node to be shared across many hosts. Once the function is assigned to a host, the host thinks that it owns the I/O function. However, adding and removing functions from the host's assigned functions means executing the normal physical steps for adding and removing I/O nodes.